Αυτή η ερώτηση έχει ήδη απαντήσεις εδώ: Express js - δεν είναι δυνατή η ανακατεύθυνση (4 απαντήσεις) Κλειστό πριν από 7 χρόνια. Χρησιμοποιώ passportjs με μεσαίο λογισμικό παρακάτω. Υποθέτουμε να ελέγξουμε εάν ο χρήστης συνδέεται όταν ζητά συγκεκριμένα πράγματα. Εάν δεν είναι συνδεδεμένος, θα πρέπει να ανακατευθυνθεί στη σελίδα σύνδεσης. Έχω μια διαδρομή αιτήματος ως εξής: app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update); Αυτή η διαδρομή θα καλείται όταν ο χρήστης προσπαθεί να ενημερώσει έναν πόρο που ονομάζεται Fantasy Team στον ιστότοπο Το author.requiresLogin είναι ένα μεσαίο λογισμικό ως εξής: export.requiresLogin = συνάρτηση (req, res, next) { εάν (req.isAuthenticated ()) { επιστροφή επόμενη () } επιστροφή res.redirect ("/ signin"); }; Μετά τη σύνδεση στον χρήστη μου, προσομοίωσα τη λήξη περιόδου σύνδεσης διαγράφοντας το cookie περιόδου σύνδεσης. Στη συνέχεια μέσω του ιστότοπου έκανα ένα αίτημα PUT '/ fantasyteams / 123' για ενημέρωση της ομάδας φαντασίας 123. Το fantasyteams.update είναι απλώς μια λειτουργία αποθήκευσης mongodb / mongoose: export.update = συνάρτηση (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (συνάρτηση (err) { res.jsonp (fantasyteam); }); }; Όπως ήταν αναμενόμενο, ο χειριστής διαδρομής (app.put ...) παραπάνω έπιασε το αίτημα, διαβιβάστε το στο μεσαίο λογισμικό auth.requiresLogin για να ελέγξετε εάν ο χρήστης είναι συνδεδεμένος. Έτσι αποδεικνύεται ότι ο χρήστης δεν έχει συνδεθεί από τότε που έχω διαγράψει το cookie συνεδρίας του. Το res.redirect καλείται όπως αναμενόταν. Ωστόσο, ο ιστότοπος δεν ανακατευθύνει στη σελίδα σύνδεσης. Αυτό το βλέπω στα αρχεία καταγραφής εντολών node.js: PUT / είσοδος 404 328ms Τι εκανα λαθος?
2021-02-25 08:20:58
Φαίνεται ότι το πρόβλημα είναι ότι δεν έχετε διαχειριστή διαδρομής για PUT / signin. Το αρχικό αίτημα ήταν ένα put, οπότε όταν ανακατευθύνει εξακολουθεί να αποτελεί μέρος του ίδιου αιτήματος «put» από το πρόγραμμα περιήγησης. Απλώς προσθέστε ένα χειριστή για το put / post / οτιδήποτε με το app.all ('/ signin') 3 | Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα node.js session cookies express passport.js ή κάντε τη δική σας ερώτηση